package me.twoday.library.mine.common.network;

import me.twoday.library.mine.common.base.BaseApplication;
import android.content.Context;
import android.net.ConnectivityManager;


/**
 * 네트워크 상태를 확인하는 유틸리티 클래스
 * 
 * @author 박우람
 * @since 2011.02.14
 */
public class NetworkUtil
{
	public static final int NETWORK_NONE = 0;
	public static final int NETWORK_WIFI = 1;
	public static final int NETWORK_3G = 2;
	
	/**
	 * 현재 통신가능한 네트워크를 반환한다.
	 * 
	 * @return 사용가능한 네트워크
	 */
	public static int getAvailableNetwork()
	{
		final ConnectivityManager connMgr = (ConnectivityManager) BaseApplication.getContext().getSystemService(Context.CONNECTIVITY_SERVICE);
		final android.net.NetworkInfo wifi = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
		final android.net.NetworkInfo mobile = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);

		if(wifi.isAvailable())
		{
			return NETWORK_WIFI;
		}
		else if(mobile.isAvailable())
		{
			return NETWORK_3G;
		}
		else
		{
			return NETWORK_NONE;
		}
	}
	
	/**
	 * WIFI, 3G등으로 네트워크 연결이 가능한지 확인한다.
	 * 
	 * @return 네트워크 사용 가능 여부
	 */
	public static boolean isAvailable()
	{
		int status = getAvailableNetwork();
		
		if(status > NETWORK_NONE)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
}
